Method for telecommunications device synchronization

ABSTRACT

A method is provided in which a first telecommunications terminal receives an indication of a characteristic of a first system software that is executing on a second telecommunications terminal. The first terminal identifies a second system software that possesses the characteristic. Then, the first terminal launches an instance of the second system software.

FIELD OF THE INVENTION

The present invention relates to telecommunications in general, and,more particularly, to device synchronization.

BACKGROUND OF THE INVENTION

Telecommunications device synchronization is the process of establishingconsistency among data stored on two telecommunications terminals. Forexample, when a user synchronizes the user's primary cellular telephonewith a backup cellular telephone, the address book and call logs of theprimary telephone are copied to the backup device. After thesynchronization is complete, the address books on the two devices areidentical and the user has access to the same information on eitherdevice.

However, a drawback of present synchronization techniques is that theyare limited to ensuring data consistency only. This drawback affectsusers in two ways. First, two telephones may have different softwareapplications installed on them. For example, a calendar application maybe available on the primary telephone, but not on the backup telephone.When this is the case, the functionalities of the two telephones differand the user is going to be put at disadvantage when he or she uses thebackup telephone despite the fact that the backup telephone issynchronized with the primary telephone.

Second, the user interface of the primary telephone may differ from theuser interface of the backup telephone. In general, users becomeaccustomed to the way in which different menus are laid on theirtelephones. When users have to switch between different interfaces theyfeel inconvenienced. Therefore, despite of the synchronization, a usermay still be inconvenienced by different interfaces on the primary andbackup cellular telephones.

SUMMARY OF THE INVENTION

The present invention addresses the drawback of the prior art byproviding a method for synchronization which achieves partial or fullconsistency between the software environments of two telecommunicationsterminals. In accordance with the present invention, a firsttelecommunications terminal receives an indication of a characteristicof a first system software that is executing on a secondtelecommunications terminal. The first terminal identifies a secondsystem software that possesses the characteristic. Then, the firstterminal launches an instance of the second system software. For thepurposes of this Specification, a “characteristic of system software” isany item of information concerning a system software or a systemsoftware instance.

For example, and without limitation, the first terminal can receive anindication that the second terminal is running an instance of version2.1 of the Android™ operating system and itself start an instance of thesame version of the operating system. As another example, the firstterminal can receive an indication that the second terminal is executingan operating system that supports the .Net framework and start anyoperating system that supports the .Net framework.

In a first embodiment of the present invention, the firsttelecommunications terminal receives the value of a configurationsetting of the first system software. The first terminal then sets thevalue of a configuration setting of the second system software to a newvalue. The new value depends on the received value. For example, thefirst terminal may receive information about the screen resolution ofthe second terminal and set its own screen resolution to be the same. Inthis way, the screen of the first terminal is able to display the samequality graphics as the second terminal.

In a second embodiment of the present invention, the first terminalreceives an indication of a characteristic of software application thatis executing on the second terminal and launches an application thatpossesses the same characteristic. For example, the first terminal canreceive an indication that the second terminal has Microsoft Word™installed on it and launch an instance of Microsoft Word. As anotherexample, the first terminal can receive an indication that the secondterminal has a word processor installed on it and launch an instance ofany word processor without regard to the brand of the launched software.For the purposes of this Specification, the term “characteristic ofsoftware” is any item of information concerning a software applicationor a software application instance.

In a third embodiment of the present invention, the firsttelecommunications terminal interacts with a virtual appliance builderto request a virtual appliance which provides a software environmentthat resembles the software environment of the second telecommunicationsterminal. When the first terminal receives the virtual appliance, itexecutes it by using virtualization software. A benefit of thisembodiment is that the device synchronization can be achieved quicklyand effectively. In this arrangement, the bulk of processing work isdelegated to the virtual appliance builder—an external server—which hasmore processing power and is better suited for performing complex tasks.

In a fourth embodiment, the present invention selects the systemsoftware whose hardware requirements are best suited for the hardwareresources available to the first terminal. In the same way, the fourthembodiment selects a software application which possesses the requisitecharacteristic and whose software requirements are most suitable for thefirst terminal.

It should be noted that the four embodiments are provided for exemplarypurposes only and they do not reflect the full scope of the claimedsubject matter.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 depicts a schematic diagram of the salient components of theillustrative embodiment of the present invention.

FIG. 2 depicts a schematic diagram of the salient components of theillustrative embodiment of the present invention.

FIG. 3 depicts a schematic diagram of the salient components of theillustrative embodiment of the present invention.

FIG. 4 depicts a schematic diagram of the salient components of theillustrative embodiment of the present invention.

FIG. 5 depicts a flowchart of the execution of the salient tasksassociated with the operation of the illustrative embodiment of thepresent invention.

FIG. 6 depicts a flowchart of the execution of the salient subtasksassociated with the performance of task 520.

FIG. 7 depicts a flowchart of the execution of the salient subtasksassociated with the performance of task 540.

FIG. 8 depicts a flowchart of the execution of the salient subtasksassociated with the performance of task 550.

FIG. 9 depicts a schematic diagram of the salient components of a secondillustrative embodiment of the present invention.

FIG. 10 depicts a flowchart of the execution of the salient tasksassociated with the operation of the illustrative embodiment of thepresent invention.

FIG. 11 depicts a flowchart of the execution of the salient subtasksassociated with the performance of task 1020.

DETAILED DESCRIPTION

FIG. 1 depicts a schematic diagram of the salient components of theillustrative embodiment of the present invention. The illustrativeembodiment comprises terminal 110 and terminal 120.

Terminal 110 is a desk set telephone receiver capable of running two ormore operating systems in a virtualized fashion. In accordance with theillustrative embodiment of the present invention, terminal 110 iscapable of voice telecommunications, but it will be clear to thoseskilled in the art, after reading this disclosure, how to make and usealternative embodiments of the present invention in which terminal 110has both a voice and video capability. Furthermore, it will be clear tothose skilled in the art, after reading this disclosure, how to make anduse alternative embodiments of the present invention in which terminal110 is another type of telecommunications device (e.g. cellulartelephone, 2-way radio, portable digital assistant, desktop, etc.).Terminal 110 is synchronized with terminal 120 to execute systemsoftware that shares at least one common characteristic with the systemsoftware executed by terminal 120.

Terminal 120 is a mobile telephone receiver. It will be clear to thoseskilled in the art, after reading this disclosure, how to make and usealternative embodiments of the present invention in which terminal 120is another type of telecommunications device (e.g. cellular telephone,2-way radio, portable digital assistant, soft phone, desktop computer,desk set telephone receiver, etc.).

In accordance with the illustrative embodiment of the present invention,terminal 120 supports the Session Initiation Protocol (SIP). Terminal120 is registered as an endpoint for a Session Imitation Protocol (SIP)uniform resource identifier (URI) on a Session Initiation Protocol (SIP)network and uses location services provided by registrar 220. Although,in accordance with the illustrative embodiment of the present invention,terminal 120 is registered on a Session Initiation Protocol (SIP)network, it will be clear to those skilled in the art, after readingthis disclosure, how to make and use alternative embodiments of thepresent invention in which terminal 120 is registered on anothertelecommunications network, such as, for example, and withoutlimitation, a cellular network, the Public Switched Telephone Network(PSTN), etc.

FIG. 2 depicts a schematic diagram of the salient components of theillustrative embodiment of the present invention. The illustrativeembodiment comprises terminal 110, terminal 120, server 230, registrar220, and telecommunications network 210.

Telecommunications network 210 transports signals between terminal 110,terminal 120, registrar 220, and server 230. In accordance with theillustrative embodiment of the present invention, telecommunicationsnetwork 210 is the Internet, but it will be clear to those skilled inthe art, after reading this disclosure, how to make and use alternativeembodiments of the present invention in which telecommunications network210 is any type of telecommunications network (e.g. local area network,the Public Switched Telephone Network, SONET, ATM, cellular network,etc.).

Registrar 220 is a Session Initiation Protocol (SIP) registrar. Inaccordance with the illustrative embodiment of the present invention,registrar 220 provides location services to terminal 120.

Server 230 is an administration server used for remotely managingterminal 120. Server 230 stores a data record which contains informationconcerning terminal 120. In accordance with the illustrative embodimentof the present invention, the record contains information about acharacteristic of system software 340 and a characteristic ofapplication 352. However, it will be clear to those skilled in the art,after reading this disclosure, how to make and use alternativeembodiments of the present invention in which the data record containsany information concerning terminal 120, such as, for example, andwithout limitation, configuration information about system software 340,configuration information about application 352, personal data of theuser of terminal 120, etc.

FIG. 3 depicts a schematic diagram of the salient components of theillustrative embodiment of the present invention. The illustrativeembodiment of the present invention comprises system software 340,virtualization layer 320, hardware 310, telephony application 342,synchronizer 323, system software library 324, application library 325,software 350, hardware 360, personal data 351, application 352,application 353, and application 354.

FIG. 3 depicts terminals 110 and 120 before they are synchronized.

Hardware 310 is the electronic components that comprise terminal 110,such as, for example, and without limitation, processor (single-core ormulti-core), memory, transceiver, network interface, display, soundinterface, video interface, etc. Hardware 310 is capable of executingsystem software and one or more telephony applications. It will be clearto those skilled in the art how to make and use hardware 310.

Virtualization layer 320 is a software layer that facilitates thesharing of the resources of hardware 310 by multiple system softwareimages. In accordance with the illustrative embodiment of the presentinvention, virtualization layer 320 is an OKL4 micro kernel, but it willbe clear to those skilled in the art, after reading this disclosure, howto make and use alternative embodiments of the present invention inwhich virtualization layer 320 is any other Type 1 hypervisor (e.g.Xen™, VMware ESX Server™, etc.) or any other hosted virtual machine(e.g. QEMU™, VMware Workstation™, etc.).

Synchronizer 323 is a software module responsible for coordinating thesynchronization of terminals 110 and 120. Although, in accordance withthe illustrative embodiment of the present invention, synchronizer 323is part of virtualization layer 320, it will be clear to those skilledin the art, after reading this disclosure, how to make and usealternative embodiments of the present invention in which synchronizer323 is executing independently of virtualization layer 320 such as, forexample, and without limitation, as a software application inside systemsoftware 340, as a software application executing directly on top ofhardware 310 (e.g. similar to a BIOS), and others. Furthermore, it willbe clear to those skilled in the art, after reading this disclosure, howto make and use alternative embodiments of the present invention inwhich synchronizer 323 is executing on different hardware (i.e. on aremote server).

System software library 324 is a repository for system software programcode. System software library 324 allows terminal 110 to retrieve thecode for one or more system software distributions (e.g. Suse Linux,Windows XP, Windows Vista, etc.). In accordance with the illustrativeembodiment of the present invention, the system software program code isstored on a remote server and system software library 324 serves as aclient for the server. However, it will be clear to those skilled in theart, after reading this disclosure, how to make and use alternativeembodiments of the present invention in which the program code for oneor more system software distributions is stored on terminal 110. It willalso be clear to those skilled in the art, after reading thisdisclosure, how to make and use alternative embodiments of the presentinvention, in which system software library 324, in addition toproviding access to executable code, also provides access to informationabout hardware and/or software requirements of different system softwaredistributions. For example, and without limitation, such informationincludes memory requirements, permanent storage requirements,compatibility with different virtualization software, and so forth.

Application library 325 is a repository for the code of one or moresoftware applications. Application library 325 allows terminal 110 toretrieve the code for one or more software applications. In accordancewith the illustrative embodiment of the present invention, the softwareprogram code is stored on a remote server and application library 325serves as a client for the server. However, it will be clear to thoseskilled in the art, after reading this disclosure, how to make and usealternative embodiments of the present invention in which the programcode for one or more software applications is stored on terminal 110. Itwill also be clear to those skilled in the art, after reading thisdisclosure, how to make and use alternative embodiments of the presentinvention, in which system application library 325, in addition toproviding access to executable code, also provides access to informationabout hardware and/or software requirements of different softwareapplication. For example, and without limitation, such informationincludes memory requirements, permanent storage requirements, use ofspecific software (e.g. JRE, etc.), and so forth.

System software 340 is a default operating system instance which allowsterminal 110 to be used when it is not synchronized with anothertelecommunications terminal. In accordance with the illustrativeembodiment of the present invention, system software 340 is an image ofthe Symbian™ operating system that is running on top of virtualizationlayer 320. It will be clear to those skilled in the art, after readingthis disclosure, how to make and use alternative embodiments of thepresent invention in which system software 340 is any type of systemsoftware, firmware, or software platform that is capable of executingone or more software applications, such as, for example, and withoutlimitation, Nokia Series 40 Platform™, Nokia Series 60 Platform™,Embedded Linux, Android OS™, Linux, BlackBerry OS™, etc.

Telephony application 342 is a software application for conductingtelephone conversations.

Hardware 360 is the electronic components that comprise terminal 120,such as, for example, and without limitation, processor (single-core ormulti-core), memory, transceiver, network interface, display, soundinterface, video interface, etc. Hardware 360 is capable of executingsystem software and one or more telephony applications. It will be clearto those skilled in the art how to make and use hardware 310.

System software 350 is an image of the Android™ operating system. Itwill be clear to those skilled in the art, after reading thisdisclosure, how to make and use alternative embodiments of the presentinvention in which system software 350 is any type of system software,firmware, or software platform that is capable of executing one or moresoftware applications, such as, for example, and without limitation,Nokia Series 40 Platform™, Nokia Series 60 Platform™, Symbian OS™,Linux, BlackBerry OS™, etc.

Application 352 is calendar software. Application 352 stores informationabout appointments and plays an alarm sound when an appointment becomesdue. It will be clear to those skilled in the art, after reading thisdisclosure, how to make and use alternative embodiments of the presentinvention in which application 352 is any software application (e.g.word processor, email client, a computer game, media player, etc.).

Application 353 is an email client.

Application 354 is a telephony application.

Personal data 351 is a collection of information that is personal to theuser of terminal 120. In accordance with the illustrative embodiment ofthe present invention, personal data 351 comprises a list of telephonenumbers (e.g. a contacts list) and a set of emails that have beenreceived at terminal 120. However, it will be clear to those skilled inthe art, after reading this disclosure, how to make and use alternativeembodiments of the present invention in which personal data 351 includesone or more files that have been created and/or edited by the user ofterminal 120 (e.g. photographs, word documents, etc.). And stillfurthermore, it will be clear to those skilled in the art, after readingthis disclosure, how to make and use alternative embodiments of thepresent invention in which personal data 351 comprises any informationthat has been stored by the user on terminal 120 (e.g. music files, calllog, Internet chat logs, etc.).

FIG. 4 depicts a schematic diagram of the salient components of theillustrative embodiment of the present invention. The illustrativeembodiment comprises system software 340, virtualization layer 320,hardware 310, telephony application 342, synchronizer 323, systemsoftware library 324, application library 325, system software 350,hardware, 360, personal data 351, application 352, application 353,application 354, system software 410, personal data 420, and application430.

FIG. 4 depicts terminals 110 and 120 after they are synchronized.

System software 410 is an instance of a system software that shares acommon characteristic with system software 340. In accordance with theillustrative embodiment of the present invention, system software 410and system software 340 are instances of the same system software.However, it will be clear to those skilled in the art, after readingthis disclosure, how to make and use alternative embodiments of thepresent invention in which system software 410 and system software 340are instances of different software that share a common characteristic.For example, and without limitation, the two system software instancesmay have the same kernel, but different versions of a library. Or thetwo system software may support the .Net™ framework, but, apart fromthat, be entirely different operating systems.

Personal data 420 is a collection of information that is personal to theuser of terminal 120. In accordance with the illustrative embodiment ofthe present invention, personal data 420 comprises the list of telephonenumbers that is included in personal data 351. Thus, in the illustrativeembodiment of the present invention, the information which personal data420 comprises is a subset of the information of personal data 351.However, it will be clear to those skilled in the art, after readingthis disclosure, how to make and use alternative embodiments of thepresent invention in which the content of personal data 420 is identicalto the content of personal data 351.

Application 430 is an instance of a software application that shares acommon characteristic with application 352. In accordance with theillustrative embodiment of the present invention, application 430 is aninstance of the same software as application 352. However, it will beclear to those skilled in the art, after reading this disclosure, how tomake and use alternative embodiments of the present invention in whichapplication 430 and 352 are instances of different softwareapplications.

FIG. 5 depicts a flowchart of the execution of the salient tasksassociated with the operation of the illustrative embodiment of thepresent invention. It will be clear to those skilled in the art, afterreading this disclosure, how to perform the tasks associated with FIG. 5in a different order than represented or to perform one or more of thetasks concurrently. Furthermore, it will be clear to those skilled inthe art, after reading this disclosure, how to make and use alternativeembodiments of the present invention that omit one or more of the tasks.

At task 510, synchronizer 323 identifies a condition which indicatesthat the synchronization of terminal 110 and terminal 120 should begin.In accordance with the illustrative embodiment of the present invention,the condition is the receipt of user input at terminal 110. However, itwill be clear to those skilled in the art, after reading thisdisclosure, how to make and use alternative embodiments of the presentinvention in which the condition is the presence of terminal 120 inproximity to terminal 110. In accordance with the alternative embodimentof the present invention, synchronizer 323 uses radio frequency ID(RFID) to identify that terminal 120 is located in proximity to terminal110. However, it will be clear to those skilled in the art, afterreading this disclosure, how to make and use alternative embodiments ofthe present invention in which synchronizer 323 uses an alternativetechnology, such as, for example, and without limitation, Bluetooth(e.g. by detecting an identifier that is broadcast by the Bluetoothmodule of the cellular telephone of the user, etc.), location signal(e.g. Global Positioning System (GPS) signal), and others.

At task 520, terminal 110 selects and starts system software 410. Task520 is further described in the discussion with respect to FIG. 6.

At task 530, personal data 420 is transferred from terminal 120 toterminal 110. In accordance with the illustrative embodiment of thepresent invention, the data transfer is accomplished by using Bluetoothtechnology, but it will be clear to those skilled in the art, afterreading this disclosure, how to make and use alternative embodiments ofthe present invention in which any wireless or wired technology is used(e.g. Universal Serial Bus (USB), Wi-Fi, etc.)

At task 540, synchronizer 323 selects and launches application 430 onterminal 110. Task 540 is further described in the discussion withrespect to FIG. 7.

At task 550, synchronizer 323 synchronizes the states of terminal 110and terminal 120. In accordance with the illustrative embodiment of thepresent invention, synchronizer 323 aligns the states of system software340 and system software 410, as well as, application 352 and application430. However, it will be clear to those skilled in the art, afterreading this disclosure, how to make and use alternative embodiments ofthe present invention in which synchronizer 323 aligns the state of onlyone of the system software instances and the application instances. Task550 is further described in the discussion with respect to FIG. 8.

At task 560, terminal 110 registers on the Session Initiation Protocol(SIP) network of terminal 120. In accordance with the illustrativeembodiment of the present invention, after the registration is complete,terminal 110 becomes registered as an endpoint for the SessionInitiation Protocol (SIP) uniform resource identifier (URI) that is alsoused by terminal 120. After the registration is complete, in accordancewith the illustrative embodiment of the present invention, both terminal120 and terminal 110 can be used in parallel to answertelecommunications made to the uniform resource identifier (URI).However, it will be clear to those skilled in the art, after readingthis disclosure, how to make and use alternative embodiments of thepresent invention in which the registration of terminal 120 as anendpoint for the uniform resource identifier (URI) is discontinued afterthe registration of terminal 110 is complete.

At task 570 synchronizer 323 sets system software 410 as the activesoftware environment of terminal 110. In particular, synchronizer 323invokes one or more system calls provided by virtualization layer 320 inorder to set the selected software environment as the active environmenton terminal 110. For the purposes of this specification, the term“active software environment” is defined as:

-   -   (i) a system software instance whose user interface is visible        on the display screen of a terminal; or    -   (ii) a system software instance that is executing a software        application whose (the software application's) interface is        visible on the display screen of a terminal; or    -   (iii) any combination of i and ii.

FIG. 6 depicts a flowchart of the execution of the salient subtasksassociated with the performance of task 520. It will be clear to thoseskilled in the art, after reading this disclosure, how to perform thetasks associated with FIG. 6 in a different order than represented or toperform one or more of the tasks concurrently. Furthermore, it will beclear to those skilled in the art, after reading this disclosure, how tomake and use alternative embodiments of the present invention that omitone or more of the tasks.

At task 610, terminal receives a characteristic of system software. Inaccordance with the illustrative embodiment of the present invention,the characteristic is the name and version number of system software 340(e.g. Windows 3.1). However, it will be clear to those skilled in theart, after reading this disclosure, how to make and use alternativeembodiments of the present invention in which another characteristic isreceived. For example, and without limitation, characteristics of systemsoftware are:

-   -   (i) kernel version number; or    -   (ii) developer identification (e.g. Microsoft, Nokia, etc.); or    -   (iii) ability to run specific software (e.g. both Windows and        Mac OS can run Word, but Linux cannot); or    -   (iv) ability to execute a specific software library (e.g.        OpenGL, DirectX, Qt); or    -   (v) support for specific hardware (e.g. cpu, networking        interface, etc.); or    -   (vi) support for specific windowing environment; or    -   (vii) scheduling algorithm information; or    -   (viii) information about scheduling priorities of different        applications; or    -   (ix) any combination of i, ii, iii, iv, v, vi, vii, and vii.

In accordance with the illustrative embodiment of the present invention,terminal 110 receives the characteristic from terminal 120, but it willbe clear to those skilled in the art, after reading this disclosure, howto make and use alternative embodiments of the present invention inwhich terminal 120 receives the indication of a characteristic fromserver 230.

At task 620, synchronizer 323 uses system software library 224 to locateexecutable code for system software that possesses the characteristicreceived at task 510. In accordance with the illustrative embodiment ofthe present invention, synchronizer 323 generates a query thatidentifies the characteristic and submits the query to system softwarelibrary 224. In response to the query, system software library 224identifies one or more addresses from where executable code for softwarethat matches the query can be downloaded.

At task 630, synchronizer 323 downloads the executable code for systemsoftware that is identified by system software library 224. Inaccordance with the illustrative embodiment of the present invention,the executable code is retrieved from the location identified by systemsoftware library 224. Furthermore, it will be clear to those skilled inthe art, after reading this disclosure, how to make and use alternativeembodiments of the present invention in which synchronizer 323 selects asystem software distribution from the results returned by systemsoftware library 323 on the basis of the system's software hardwarerequirements. In this way, synchronizer 223 ensures that selected systemsoftware will run adequately on the hardware of terminal 110.

At task 640, system software executes the code retrieved at task 630 ontop of virtualization layer 320 to launch system software 410. It willbe clear to those skilled in the art how to launch a system softwareinstance in a virtualized environment.

FIG. 7 depicts a flowchart of the execution of the salient subtasksassociated with the performance of task 540. It will be clear to thoseskilled in the art, after reading this disclosure, how to perform thetasks associated with FIG. 7 in a different order than represented or toperform one or more of the tasks concurrently. Furthermore, it will beclear to those skilled in the art, after reading this disclosure, how tomake and use alternative embodiments of the present invention that omitone or more of the tasks.

At task 710, terminal 110 receives a characteristic of an application.In accordance with the illustrative embodiment of the present invention,terminal 110 receives the title and version number of application 352.However, it will be clear to those skilled in the art, after readingthis disclosure, how to make and use alternative embodiments of thepresent invention in which another characteristic is received. Forexample, and without limitation, characteristics of a softwareapplication are:

-   -   (i) the function performed by the application (e.g. word        processor, spreadsheet editor, instant messaging client, etc.);        or    -   (ii) compatibility with a specific operating system (e.g.        Microsoft, Nokia, etc.); or    -   (iii) whether the application is executable by a specific        runtime environment (e.g. the Java Runtime Environment, .Net        runtime environment, etc.); or    -   (iv) whether the application requires a specific library to be        supported by the system software inside which the application is        to execute (e.g. DirectX, OpenGL, etc.); or    -   (v) the application's hardware requirements (e.g. web camera,        minimum amount of memory needed, maximum amount of memory        needed, etc.); or    -   (vi) any combination of i, ii, iii, iv, and v.

In accordance with the illustrative embodiment of the present invention,terminal 110 receives the characteristic from terminal 120, but it willbe clear to those skilled in the art, after reading this disclosure, howto make and use alternative embodiments of the present invention inwhich terminal 120 receives an indication of the characteristic fromserver 230. Although in accordance with the illustrative embodiment ofthe present invention, terminal 110 receives a characteristic of asoftware application that is executing, it will be clear to thoseskilled in the art, after reading this disclosure, how to make and usealternative embodiments of the present invention in which terminal 110receives a characteristic of an application that is available forexecution, such as an application that is installed on terminal 120, butis not running at the time task 710 is executed.

At task 720, synchronizer 323 uses application library 325 to locateexecutable code for an application that possesses the characteristicreceived at task 710. In accordance with the illustrative embodiment ofthe present invention, synchronizer 323 generates a query thatidentifies the characteristic and submits the query to applicationlibrary 325. In response to the query, application library 325identifies one or more software applications that match the query andprovides synchronizer 323 with the addresses of the locations from wherethe executable code for the applications can be downloaded.

At task 730, synchronizer 323 downloads executable code for anapplication that is identified by application library 325. It will beclear to those skilled in the art, after reading this disclosure, how tomake and use alternative embodiments of the present invention in whichsynchronizer 323 selects a software application to download (out of thepool of applications identified by application library 325) based on theapplication's hardware requirements. In this way, synchronizer 223ensures that selected software application will run adequately on thehardware of terminal 110.

At task 740, system software 410 executes the code retrieved at task 630to instantiate application 430.

FIG. 8 depicts a flowchart of the execution of the salient subtasksassociated with the performance of task 550. It will be clear to thoseskilled in the art, after reading this disclosure, how to perform thetasks associated with FIG. 8 in a different order than represented or toperform one or more of the tasks concurrently. Furthermore, it will beclear to those skilled in the art, after reading this disclosure, how tomake and use alternative embodiments of the present invention that omitone or more of the tasks.

At task 810, terminal 110 receives the value of a configuration settingfor system software 340. In accordance with the illustrative embodimentof the present invention, the configuration setting is the address ofthe default domain name service (DNS) server that is used by systemsoftware 340. However, it will be clear to those skilled in the art,after reading this disclosure, how to make and use alternativeembodiments of the present invention in which any information concerningthe network settings of system software 340 is received (e.g. firewallpolicies identification of encryption algorithms used by the terminal,networking interface settings, etc.). Furthermore, it will be clear tothose skilled in the art, after reading this disclosure, how to make anduse alternative embodiments of the present invention in which anyinformation concerning the configuration settings of software 340 isreceived by terminal 110. For example, and without limitation, suchinformation includes:

-   -   (i) information about the configuration of storage which        terminal 110 uses (e.g. partitions to which system software has        access, file systems supported, number of system services        running, etc.); or    -   (ii) information about the windowing environment used by        terminal 110 (e.g. theme of windowing environment, version of        windowing environment used, name of a picture file used as a        screen background, etc.); or    -   (iii) information about different user and/or user group        accounts (e.g. account names, access privileges); or    -   (iv) identification of what system modules are loaded at boot        time; or    -   (v) device driver settings; or    -   (vi) information about security policies implemented by system        software 340 (e.g. file permissions, blocked file extensions,        etc.); or    -   (vii) information about the configuration of different hardware        and/or peripheral devices (e.g. screen resolution of a video        adapter, maximum transfer rate of a network adapter, speaker        volume settings, sound adapter equalizer settings, microphone        volume settings etc.); or    -   (viii) information about any other configuration setting of        system software 340; or    -   (ix) any combination of i, ii, iii, iv, v, vi, vii, and viii.

In accordance with the illustrative embodiment of the present invention,terminal 110 receives one or more copies of configuration files that areused by system software 340 (e.g. host.conf in the context of Linux).However, it will be clear to those skilled in the art, after readingthis disclosure, how to make and use alternative embodiments of thepresent invention in which terminal 110 extracts items of informationfrom data records that are used by system software 340 and transmits theextracted information to terminal 110. Furthermore, it will be clear tothose skilled in the art, after reading this disclosure, how to make anduse alternative embodiments of the present invention in which terminal120 transmits information to terminal 110 that is contained in randomaccess memory of terminal 120 that has been allocated to system software410 (e.g. number of processes executing on the terminal, a change to aconfiguration setting that has been entered by the user of terminal 120,but not saved yet etc.).

At task 820, terminal 110, receives the value of a configuration settingfor application 352. In accordance with the illustrative embodiment ofthe present invention, the received information is an identification ofan alarm sound that is played when an appointment becomes due (e.g.filename of sound file, alphanumerical string that the distinguishes thesound from other sounds, etc.). It will be clear to those skilled in theart, after reading this disclosure, how to make and use alternativeembodiments of the present invention in which any kind of configurationinformation for a software application is received by terminal 110, suchas, for example, and without limitation, a list of Internet bookmarks,information about preferred fonts, information about preferred fontsizes, information about default colors, information about content ofdifferent graphical user interface (GUI) toolbars, identification ofwhat graphical user interface (GUI) toolbars are made visible,information about where document templates are stored, etc.

In accordance with the illustrative embodiment of the present invention,terminal 110 receives one or more copies of configuration files that areused by application 352. However, it will be clear to those skilled inthe art, after reading this disclosure, how to make and use alternativeembodiments of the present invention in which terminal 120 extractsinformation from data records that are used by application 352 andtransmits the extracted information to terminal 110. Furthermore, itwill be clear to those skilled in the art, after reading thisdisclosure, how to make and use alternative embodiments of the presentinvention in which terminal 120 transmits information to terminal 110that is contained in random access memory of terminal 120 that has beenallocated to the software application (e.g. content of input buffers,information that has been entered into the application, but not savedyet, etc.).

Furthermore, in accordance with the illustrative embodiment of thepresent invention, the configuration information is transmitted byterminal 120. However, it will be clear to those skilled in the art,after reading this disclosure, how to make and use alternativeembodiments of the present invention in which the configurationinformation is transmitted by server 230.

At task 830, terminal 110 changes the value of a configuration settingof system software 410. In accordance with the illustrative embodimentof the present invention, terminal 110 configures system software 410 touse the same default domain name service (DNS) server as system software340. Thus, in accordance with the illustrative embodiment of the presentinvention, the value of the configuration setting of system software 410is made equal to the value of the configuration setting of systemsoftware 340. However, it will be clear to those skilled in the art,after reading this disclosure, how to make and use alternativeembodiments of the present invention, in which the new value of theconfiguration setting of system software 410 also depends on the valueof the configuration setting of system software 310, but falls short ofbeing the same. For example, and without limitation, in a situation inwhich the configuration setting is screen resolution, the screenresolution of system software 410 may be set to a value that is close tothe resolution of system software 340, but is more suitable for theaspect ratio of the screen of terminal 110.

At task 840, terminal 110 changes the value of a configuration settingof application 430. In accordance with the illustrative embodiment ofthe present invention, terminal 110 sets application 430 to use the samealarm sound as application 352. In accordance with the illustrativeembodiment of the present invention, the value of the configurationsetting of application 430 is made to be equal to the value of theconfiguration setting of system application 352. However, it will beclear to those skilled in the art, after reading this disclosure, how tomake and use alternative embodiments of the present invention in whichthe new value of the configuration setting of application 430 alsodepends on the value of the configuration setting of application 352,but falls short of being the same. For example, and without limitation,in a situation in which the configuration setting is the font type usedto display menus of application 352, application 430 may not support theexact same font. In this situation, it will select a font that is theclosest, from a visual standpoint, to the font used by application 352.As another example, terminal 110 can select an alarm that has similarpitch to the alarm tone of application 352, but is a different sound.

FIG. 9 depicts a schematic diagram of the salient components of a secondillustrative embodiment of the present invention. The illustrativeembodiment comprises terminal 110, telecommunications network 920, andappliance builder 910.

In the second illustrative embodiment of the present invention, terminal110 receives and executes a virtual appliance that is configured toresemble the software environment of terminal 120. In accordance withthe second illustrative embodiment of the present invention, theexecution of the virtual appliance causes the instantiation of systemsoftware 410 and application 430.

Appliance builder 910 is a virtual appliance builder. It comprisescomputer hardware (e.g. processor, memory, network interface, etc.) andsoftware for generating virtual appliances. The hardware of appliancebuilder 910 is configured to execute the software for generating virtualappliances. In accordance with the second illustrative embodiment of thepresent invention, appliance builder generates a virtual appliance whichcomprises system software 410, personal data 420, and application 430.After generating the appliance, appliance builder 910 transmits it toterminal 110. Terminal 110 receives the appliance and executes it on topof virtualization layer 320.

Telecommunications network 920 transports signals between terminal 110and appliance builder 910. In accordance with the second illustrativeembodiment of the present invention, telecommunications network 920 isthe Internet, but it will be clear to those skilled in the art, afterreading this disclosure, how to make and use alternative embodiments ofthe present invention in which telecommunications network 920 is anytype of telecommunications network (e.g. local area network, the PublicSwitched Telephone Network, SONET, ATM, cellular network, etc.).

FIG. 10 depicts a flowchart of the execution of the salient tasksassociated with the operation of the illustrative embodiment of thepresent invention. It will be clear to those skilled in the art, afterreading this disclosure, how to perform the tasks associated with FIG.10 in a different order than represented or to perform one or more ofthe tasks concurrently. Furthermore, it will be clear to those skilledin the art, after reading this disclosure, how to make and usealternative embodiments of the present invention that omit one or moreof the tasks.

At task 1010, synchronizer 323 identifies a condition which indicatesthat the synchronization of terminal 110 and terminal 120 should begin.Task 1010 is identical to task 510.

At task 1020, terminal 110 receives information from terminal 120. Task1020 is further described in the discussion with respect to FIG. 11.

At task 1030, terminal 110 transmits the information received at task1020 to appliance builder 910. In accordance with the secondillustrative embodiment of the present invention, terminal 110 transmitsthe full set of information which it received at task 1020. However, itwill be clear to those skilled in the art, after reading thisdisclosure, how to make and use alternative embodiments of the presentinvention in which terminal 110 transmits a subset of the information.In one alternative embodiment of the present invention, terminal 110transmits information about a characteristic of system software 340. Inanother embodiment of the present invention, terminal 110 transmitsinformation about a characteristic of application 352. In a thirdalternative embodiment of the present invention, terminal 110 transmitsto appliance builder 910 some or all of the personal informationreceived at task 1020.

At task 1040, appliance builder 910 selects an operating system for thevirtual appliance. In accordance with the second illustrative embodimentof the present invention, appliance builder 910 selects system softwarethat possess the characteristic received at task 1110. Furthermore, inaccordance with the illustrative embodiment of the present invention,appliance builder uses a software repository, such as system softwarelibrary 324, to locate and retrieve the code for the system softwareinstance that possesses the system software characteristic. Although, inaccordance with the illustrative embodiment of the present invention,the repository is located on a remote server, it will be clear to thoseskilled in the art, after reading this disclosure, how to make and usealternative embodiments of the present invention in which the repositoryis located on the same physical device as appliance builder 910.

At task 1050, appliance builder selects an application that possessesthe application characteristic received at task 1120 to the virtualappliance. Furthermore, in accordance with the illustrative embodimentof the present invention, appliance builder uses a software repository,such as system application library 325, to locate and retrieve the codefor the software application that possesses the system softwarecharacteristic received at task 1020. Although, in accordance with theillustrative embodiment of the present invention, the repository islocated on a remote server, it will be clear to those skilled in theart, after reading this disclosure, how to make and use alternativeembodiments of the present invention in which the repository is locatedon the same physical device as appliance builder 910.

After the application is selected, appliance builder generates a virtualappliance that is based on the operating system selected at task 1040and contains the application selected at task 1050.

At task 1060, appliance builder 910 changes the value of a configurationsetting of the operating system of the virtual appliance. In accordancewith the illustrative embodiment of the present invention, appliancebuilder 910 configures the system software of the virtual appliance touse the same default domain name service (DNS) server as system software340. Thus, in accordance with the illustrative embodiment of the presentinvention, the value of the configuration setting of system software 410is made equal to the value of the configuration setting of systemsoftware 340. However, it will be clear to those skilled in the art,after reading this disclosure, how to make and use alternativeembodiments of the present invention, in which the new value of theconfiguration setting of the operating system of the virtual appliancedepends on the value of the configuration setting of system software310, but falls short of being the same. For example, and withoutlimitation, in a situation in which the configuration setting is screenresolution, the screen resolution of the virtual appliance may be set toa value that is close to the resolution of system software 340, but ismore suitable for the aspect ratio of the screen of terminal 110 thanthe screen resolution of system software 410.

Although, in accordance with the illustrative embodiment of the presentinvention, only the operating system of the virtual appliance isconfigured, it will be clear to those skilled in the art, after readingthis disclosure, how to make and use alternative embodiments of thepresent invention in which the software application which is selected attask 1050 is also configured. In these embodiments of the presentinvention, the configuration of the software application is conducted inthe manner described in the discussion with respect to task 840.

Additionally, in accordance with the illustrative embodiment of thepresent invention, appliance builder 910 adds the personal data receivedat task 1020 to the virtual appliance.

At task 1070, appliance builder 910 transmits the virtual appliance toterminal 110.

At task 1080, terminal 110 receives the virtual appliance.

At task 1090, terminal 110 launches the virtual appliance on top ofvirtualization layer 320. The launching of the virtual appliance causesthe instantiation of system software 410 and application 430.

FIG. 11 depicts a flowchart of the execution of the salient subtasksassociated with the performance of task 1020. It will be clear to thoseskilled in the art, after reading this disclosure, how to perform thetasks associated with FIG. 11 in a different order than represented orto perform one or more of the tasks concurrently. Furthermore, it willbe clear to those skilled in the art, after reading this disclosure, howto make and use alternative embodiments of the present invention thatomit one or more of the tasks.

At task 1110, terminal receives a characteristic of system software. Inaccordance with the illustrative embodiment of the present invention,the characteristic is of system software 340. Task 1110 is identical totask 610.

At task 1120, terminal 110 receives a characteristic of an application.In accordance with the illustrative embodiment of the present invention,the characteristic is of application 352. Task 1120 is identical to task710.

At task 1130, personal data 420 is transferred from terminal 120 toterminal 110. Task 1130 is identical to task 530.

At task 1130, terminal 110 receives the value of a configuration settingof system software 340. Task 1130 is identical to task 810.

It is to be understood that the disclosure teaches just one example ofthe illustrative embodiment and that many variations of the inventioncan easily be devised by those skilled in the art after reading thisdisclosure and that the scope of the present invention is to bedetermined by the following claims.

What is claimed is:
 1. A method comprising: receiving, at a first devicehaving stored thereon (i) a plurality of mobile operating systemscomprising a first mobile operating system and (ii) a first application,an identification indicating a second device is within a proximitythreshold of the first device, wherein the second device is running asecond application on a second mobile operating system; receiving, atthe first device, a first indication that the second mobile operatingsystem El has an ability to execute a specific software library, and(ii) uses a specific theme of a windowing environment; identifying thefirst mobile operating system stored at the first device as (i) havingthe ability to execute the specific software library, and (ii) using thespecific theme, wherein the first mobile operating system and the secondmobile operating system are of one of different operating system typesor different operating system versions; launching, at the first device,a virtual instance of the first mobile operating system such that thefirst device and the second device run different mobile operatingsystems from each other; receiving, at the first device, a secondindication that the second application requires access to the specificsoftware library; identifying the first application stored at the firstdevice as requiring access to the specific software library; launching,at the first device, the first application on the virtual instance ofthe first mobile operating system; receiving, at the first device, aconfiguration setting of the second application; based on theconfiguration setting, synchronizing a state of the first applicationwith the second application; and synchronizing one or more states of thefirst device and the second device.
 2. The method of claim 1, wherein acharacteristic of the second mobile operating system relates to a screenbackground used by the second mobile operating system, and wherein thefirst mobile operating system is identified as matching thecharacteristic.
 3. The method of claim 1, wherein a characteristic ofthe second mobile operating system relates to an ability run specificsoftware, and wherein the first mobile operating system is identified asmatching the characteristic.
 4. The method of claim 1, wherein acharacteristic of the second mobile operating system relates to anability to support for specific hardware, and wherein the first mobileoperating system is identified as matching the characteristic.
 5. Themethod of claim 1, wherein the characteristic of the second mobileoperating system is received from the second device.
 6. A systemcomprising: a processor; and a computer-readable storage medium storinginstructions which, when executed by the processor, cause the processorto perform operations comprising: receiving, at a first device havingstored thereon (i) a plurality of mobile operating systems comprising afirst mobile operating system and (ii) a first application, anidentification indicating a second device is within a proximitythreshold of the first device, wherein the second device is running asecond application on a second mobile operating system; receiving, atthe first device, a first indication that the second mobile operatingsystem (i) has an ability to execute a specific software library, and(ii) uses a specific theme of a windowing environment; identifying thefirst mobile operating system stored at the first device as (i) havingthe ability to execute the specific software library, and (ii) using thespecific theme, wherein the first mobile operating system and the secondmobile operating system are of one of different operating system typesor different operating system versions; launching, at the first device,a virtual instance of the first mobile operating system such that thefirst device and the second device run different mobile operatingsystems from each other; receiving, at the first device, a secondindication that the second application requires access to the specificsoftware library; identifying the first application stored at the firstdevice as requiring access to the specific software library; launching,at the first device, the first application on the virtual instance ofthe first mobile operating system; receiving, at the first device, aconfiguration setting of the second application; based on theconfiguration setting, synchronizing a state of the first applicationwith the second application; and synchronizing one or more states of thefirst device and the second device.
 7. The system of claim 6, wherein acharacteristic of the second mobile operating system relates to a screenbackground used by the second mobile operating system, and wherein thefirst mobile operating system is identified as matching thecharacteristic.
 8. The system of claim 6, wherein a characteristic ofthe second mobile operating system relates to an ability run specificsoftware, and wherein the first mobile operating system is identified asmatching the characteristic.
 9. The system of claim 6, wherein acharacteristic of the second mobile operating system relates to anability to support for specific hardware, and wherein the first mobileoperating system is identified as matching the characteristic.
 10. Thesystem of claim 6, wherein the characteristic of the second mobileoperating system is received from the second device.
 11. Acomputer-readable storage device storing instructions which, whenexecuted by a processor, cause the processor to perform operationscomprising: receiving, at a first device having stored thereon (i) aplurality of mobile operating systems comprising a first mobileoperating system and (ii) a first application, an identificationindicating a second device is within a proximity threshold of the firstdevice, wherein the second device is running a second application on asecond mobile operating system; receiving, at the first device, a firstindication that the second mobile operating system (i) has an ability toexecute a specific software library, and (ii) uses a specific theme of awindowing environment; identifying the first mobile operating systemstored at the first device as (i) having the ability to execute thespecific software library, and (ii) using the specific theme, whereinthe first mobile operating system and the second mobile operating systemare of one of different operating system types or different operatingsystem versions; launching, at the first device, a virtual instance ofthe first mobile operating system such that the first device and thesecond device run different mobile operating systems from each other;receiving, at the first device, a second indication that the secondapplication requires access to the specific software library;identifying the first application stored at the first device asrequiring access to the specific software library; launching, at thefirst device, the first application on the virtual instance of the firstmobile operating system; receiving, at the first device, a configurationsetting of the second application; based on the configuration setting,synchronizing a state of the first application with the secondapplication; and synchronizing one or more states of the first deviceand the second device.
 12. The computer-readable storage device of claim11, wherein a characteristic of the second mobile operating systemrelates to a screen background used by the second mobile operatingsystem, and wherein the first mobile operating system is identified asmatching the characteristic.
 13. The computer-readable storage device ofclaim 11, wherein a characteristic of the second mobile operating systemrelates to an ability run specific software, and wherein the firstmobile operating system is identified as matching the characteristic.14. The computer-readable storage device of claim 11, wherein acharacteristic of the second mobile operating system relates to anability to support for specific hardware, and wherein the first mobileoperating system is identified as matching the characteristic.